using System.Windows.Forms;
using CodeSnippet.Config;

namespace CodeSnippet.Forms
{
    /// <summary>
    /// Interface used to represent any supported plugin dialogs.
    /// </summary>
    /// <remarks>
    /// Helps abstract the interaction with the plugin dialog regardless of which is being used.
    /// </remarks>
    internal interface ICodeSnippetForm
    {
        #region Properties
        /// <summary>
        /// Gets the caption of the form.
        /// </summary>
        /// <value>The text.</value>
        string Text { get; }
        /// <summary>
        /// Plugin configuration.
        /// </summary>
        CodeSnippetConfig Config { get; set; }
        /// <summary>
        /// Code snippet contents processed and ready for return as new content.
        /// </summary>
        string CodeSnippet { get; }
        /// <summary>
        /// Code snippet content to be processed.
        /// </summary>
        string CodeSnippetToEdit { set; }
        #endregion Properties

        #region Methods
        /// <summary>
        /// Display the respective form.
        /// </summary>
        /// <param name="owner">Windows handle to whom the pluggin belongs.</param>
        /// <returns>The form's exit value.</returns>
        DialogResult ShowDialog(IWin32Window owner);
        #endregion Methods
    }
}